using System.ComponentModel;
using Needle.Framework;

namespace Needle.Core.Activation {

    /// <summary>
    /// Activator interface.
    /// </summary>
    public interface IActivator : IComponent, INotifyDisposed {
        /// <summary>
        /// The id of the dependency this activator is responsible for.
        /// </summary>
        InstanceId Id { get;}
        /// <summary>
        /// The activation info.
        /// </summary>
        IActivationInfo Info { get; }
        /// <summary>
        /// Creates and registers a new instance.
        /// </summary>
        object CreateInstance();
        /// <summary>
        /// Configures the instance.
        /// </summary>
        void ConfigureInstance(object instance);

    }

}
